home *** CD-ROM | disk | FTP | other *** search
- Path: uunet!jarthur!elroy.jpl.nasa.gov!usc!cs.utexas.edu!rutgers!mit-eddie!uw-beaver!zephyr.ens.tek.com!tekred!saab!billr
- From: billr@saab.CNA.TEK.COM (Bill Randle)
- Newsgroups: comp.sources.games
- Subject: v09i025: NetHack3 - display oriented dungeons & dragons (Ver. 3.0), Patch7y
- Message-ID: <5239@tekred.CNA.TEK.COM>
- Date: 24 Feb 90 01:07:41 GMT
- Sender: news@tekred.CNA.TEK.COM
- Lines: 1219
- Approved: billr@saab.CNA.TEK.COM
-
- Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
- Posting-number: Volume 9, Issue 25
- Archive-name: NetHack3/Patch7y
- Patch-To: NetHack3: Volume 7, Issue 56-93
-
-
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then unpack
- # it by saving it into a file and typing "sh file". To overwrite existing
- # files, type "sh file -c". You can also feed this as standard input via
- # unshar, or by typing "sh <file", e.g.. If this archive is complete, you
- # will see the following message at the end:
- # "End of archive 25 (of 30)."
- # Contents: Install.dos src/monst.c1
- # Wrapped by billr@saab on Wed Feb 21 10:04:47 1990
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'Install.dos' -a "${1}" != "-c" ; then
- echo shar: Renaming existing file \"'Install.dos'\" to \"'Install.dos.orig'\"
- mv -f 'Install.dos' 'Install.dos.orig'
- fi
- echo shar: Extracting \"'Install.dos'\" \(16432 characters\)
- sed "s/^X//" >'Install.dos' <<'END_OF_FILE'
- X Instructions for compiling and installing NetHack 3.0
- X on an MS-DOS, TOS, or OS/2 system
- X =====================================================
- X (or, How to make PC, ST, and OS/2 NetHack 3.0)
- X Last revision: 17 Feb 1990
- X
- X (Credit for a runnable full PC NetHack 3.0 goes to the overlay team of
- X Pierre Martineau, Stephen Spackman, Norm Meluch, and Kevin Smolkowski,
- X who built on the work of Steve Creps and Mike Threepoint. Credit for
- X ST and OS/2 NetHack 3.0 goes to Eric Smith and Timo Hakulinen,
- X respectively.)
- X
- X1. Make sure all the NetHack files are in the appropriate directory structure.
- X You should have a main directory with subdirectories src, include, auxil,
- X others, amiga, mac, and vms. If you do not follow this structure, the
- X Makefile will not function properly.
- X
- X All the shared and UNIX-specific .c files and the source Makefile belong
- X in src; all the PC .c files and make files belong in others; all the .h
- X files belong in include; other assorted files belong in auxil. We will
- X not need any of the files from the amiga, mac, and vms directories.
- X
- X If you downloaded or ftp'd the sources from a UNIX system, the lines
- X will probably end in UNIX-style newlines, instead of the carriage
- X return and line feed pairs used by DOS and OS/2. Turbo C 2.0 in
- X particular dislikes these; you'll have to convert them (with a utility
- X like Rahul Dhesi's "flip"). Also, every file should end with an empty
- X line, because both Microsoft C and MASM have a habit of ignoring the
- X last line of each file. (TOS compilers generally don't have either
- X problem).
- X
- X2. Move the .c files from the others directory to your src directory
- X based on the following decisions. You will probably want to include
- X all of these files.
- X
- X You will definitely need pc*.c and msdos.c.
- X
- X The file termcap.uu is the fixed version of the Fred Fish termcap library.
- X You will need to run a uudecode utility on it to generate the file
- X termcap.arc. termcap.arc contains several files of termcap routines.
- X Using them with NetHack involves very little knowledge of the UNIX concept
- X of a termcap database; mostly you need to know enough to set a TERM
- X environment variable. You can unarc termcap.arc here in the others
- X directory, but if you are going to use it, it is probably best to unarc a
- X copy in the src directory. That way you will not miss copying any
- X files over. Wherever you unarc it, get rid of the included makefile
- X since a better version has been provided as Makefile.lib.
- X
- X random.c is only needed if you want the high-quality random number
- X generation routines.
- X
- X trampoli.c and ovlmgr.obj files are needed for the MS-DOS overlays.
- X The file ovlmgr.uu (MS-DOS overlay manager) is the uuencoded assembled
- X object module for the overlay manager in case you do not have MASM.
- X You will need to run a uudecode utility on this file too, to generate
- X ovlmgr.obj.
- X
- X TOS users should use others/lev_lex.c instead of src/lev_lex.c.
- X MS-DOS users should be able to use either, but the one in src
- X is smaller. If you have flex or some other lex work-alike, use
- X that to produce lev_lex.c from lev_comp.l.
- X
- X Obviously, TOS users don't need the MS-DOS overlay functions.
- X Moreover, the GCC "curses" library has termcap routines built
- X in, so if you have this you don't need termcap.arc.
- X
- X3. Now look at Makefile.* in your others directory. Consult the list below
- X and pick out the makefile most appropriate to your system. Rename this
- X file to "Makefile" (no extension), and move it into your src directory.
- X
- X DOS:
- X Microsoft C 5.1 Makefile.ovl
- X Microsoft C 4.0 Makefile.pc
- X Turbo C 2.0 Makefile.tcc
- X OS/2:
- X Microsoft C 5.1 Makefile.os2
- X TOS:
- X GCC 1.34 Makefile.st
- X
- X The PC NetHack makefiles are set up for NDMAKE, a public domain
- X "make" utility. Both Microsoft's and Borland's "make" leave much to
- X be desired. It is worth the extra effort to get NDMAKE if you don't
- X already have it. Among other things, NDMAKE automatically generates
- X link response files when the link command involves so many objects
- X that the command would become longer than DOS can handle. If you must
- X use Microsoft's or Borland's "make", you'll need to edit the makefile
- X into a form your make can use, and add instructions to generate a link
- X response file.
- X
- X The ST NetHack makefile should work with either the widely available
- X PD make, or (much better) GNU Make.
- X
- X If you're using a different compiler, you will have to adapt one of
- X the makefiles to your needs. In particular, change the CC and CFLAGS
- X macros to your C compiler's file name and the parameters to pass it.
- X
- X For DOS users, if you are going to be constructing the Fred Fish termlib
- X you will need the Makefile.lib. Copy this to your source directory too,
- X and do not change its name.
- X
- X Makefile.top in the top directory and Makefile.aux(il) in the
- X auxil directory are for UNIX NetHack. You may delete them.
- X
- X4. Now go to the include subdirectory to edit a couple of the header files
- X there.
- X
- X First edit config.h according to the comments to match your system and
- X desired set of features. Mostly you need to check the WIZARD option,
- X make sure the HACKDIR is set properly, and check TERMLIB and COMPRESS.
- X
- X Also edit pcconf.h for PC or OS/2 NetHack, or tosconf.h for ST NetHack.
- X pcconf.h should not need much editing if you are including termcap.uu,
- X random.c and ovlmgr.uu. If you are not including any of these you will
- X need to comment out TERMLIB, RANDOM, and/or OVERLAY respectively.
- X
- X Commenting out the #define TERMLIB in pcconf.h/tosconf.h to disable
- X use of termcap routines (relying on the ANSI_DEFAULT feature) will make
- X your job a bit easier. However, you can compile with both and simply
- X not set your TERM variable if you do not wish to use the termcap file
- X settings.
- X
- X ST and OS/2 NetHackers can skip to the next section, since the entire game
- X will fit in less than one megabyte.
- X
- X PC NetHackers:
- X
- X To compile under MS-DOS, you must either produce an overlaid executable or
- X make some very difficult decisions about which features to include.
- X
- X The base size of a PC NetHack executable, with no extra features or
- X overlays, will be around 570 kilobytes. Anything over 590K is likely not
- X to work. Here's an incomplete and outdated list of the approximate costs
- X of various additional features in terms of executable size, using
- X Microsoft C:
- X
- X WIZARD 3K
- X LOGFILE
- X NEWS
- X COMPRESS 2K
- X ZEROCOMP
- X CHDIR
- X
- X POLYSELF 31K
- X THEOLOGY 11K
- X SOUNDS 6K
- X KICK
- X
- X THRONES 3K
- X FOUNTAINS 2K
- X SINKS 5K
- X ALTARS 4K
- X
- X WALLIFIED_MAZE 1K
- X REINCARNATION 7K
- X STRONGHOLD 13K
- X
- X ORACLE
- X MEDUSA
- X KOPS
- X ARMY 1K
- X WORM
- X GOLEMS 2K
- X INFERNO
- X SEDUCE
- X TOLKIEN
- X PROBING 1K
- X WALKIES 4K
- X SHIRT
- X MUSIC 6K
- X TUTTI_FRUTTI
- X SPELLS 10K
- X NAMED_ITEMS
- X
- X ELBERETH 3K
- X EXPLORE_MODE 2K
- X HARD
- X
- X REDO 1K
- X COM_COMPL 1K
- X CLIPPING
- X
- X OVERLAY 0K
- X DGK 7K
- X TERMLIB
- X RANDOM 1K
- X SHELL
- X TEXTCOLOR 1K
- X
- X Using Microsoft C and overlays, we've managed to enable everything.
- X Unfortunately, the overlay manager doesn't work with Turbo C. Using
- X Turbo C, we eked by with just WIZARD, ZEROCOMP, BITFIELDS, ELBERETH,
- X HARD, REDO, DGK and TEXTCOLOR. There's very little leeway for nifty
- X features without an overlay manager.
- X
- X5. If you're using a compiler not in the list in step 3, you may want to look
- X through system.h, in the include directory. This file matches the return
- X and parameter types for system calls and library routines with various
- X flavors of compilers and operating systems. Leaving this file alone is
- X unlikely to cause problems, but if you get compile errors with any
- X functions in the standard library, it's worth checking the declarations
- X there.
- X
- X6. If you want to change the high score list behavior, examine the top of
- X topten.c, in the src directory. You may want to change the definitions of
- X PERSMAX, POINTSMIN, and ENTRYMAX. I set POINTSMIN to 51 and ENTRYMAX to
- X 50 to keep the size of the score list down.
- X
- X7. Go to the src directory and edit the top of your Makefile. Be sure the
- X directory you want the game installed in actually exists.
- X
- X If you elected not to use the high-quality BSD random number routines by
- X commenting out RANDOM in pcconf.h or tosconf.h, comment out (or set equal
- X to nothing) the RANDOM macro in your Makefile.
- X
- X If you elected to use Fred Fish's termcap library (bundled in as
- X termcap.arc), you will have to generate termcap.lib from those sources
- X by typing make -f makefile.lib termlib.lib.
- X DOS users must set the TERMLIB option in Makefile.ovl(msc) to link in
- X the resulting termlib.lib.
- X
- X If you're using Makefile.ovl and you have Microsoft's Macro Assembler
- X version 5.1, you may want to enable the option in the make file to rebuild
- X ovlmgr.obj, although a ready-made object file is provided for those of you
- X without.
- X
- X If you are recompiling after patching your sources, or if you got your
- X files from somewhere other than the official distribution, "touch
- X makedefs.c" to ensure that certain files (onames.h and pm.h) are remade,
- X lest potentially troublesome timestamps fool "make".
- X
- X8. Now, enter "make all", and take a long siesta; your computer will be
- X occupied for a long time. If all goes well, you will get an executable.
- X If you tried to compile in too many features, you will probably get a
- X dysfunctional executable, and will have to start over.
- X
- X Also, as of pl7 with OVERLAY you might need to use MAKE45L.EXE for your
- X compile. The Makefile.ovl with all of its OVLx funness is a bit much
- X for even generic NDMAKE45.
- X
- X Hint: If you're short on memory, you might enter "make -n all
- X >script.bat", and then in DOS enter "script", or in TOS use the Gulam
- X command "source script.bat". GCC users will be short on memory if
- X they only have 2 megabytes. Indeed, some files will not compile in
- X 2 megabytes with the GCC 1.36; for these you'll either have to turn
- X off the -O option or use an earlier version of the GCC.
- X
- X9. Make sure the support files-- data, rumors, cmdhelp, opthelp, help, hh,
- X history, license, and oracles (if ORACLES was #define'd)-- were copied
- X to the game directory. If not, move them there from the auxil directory
- X yourself. rumors can be created manually by entering "makedefs -r";
- X data by entering "makedefs -d".
- X
- X If you compiled in the compiled levels (if STRONGHOLD was #define'd), make
- X sure castle, tower?, and possibly endgame are there, too. They can be
- X created manually by entering "lev_comp filename.des", where filename.des
- X is the appropriate description file (found in the auxil directory).
- X
- X10. Go to the others directory. Copy NetHack.cnf, or Atari.cnf for TOS, to
- X your game directory as "NetHack.cnf". Edit it to reflect your particular
- X setup and personal preferences, following the comments.
- X
- X If you compiled in the TERMLIB feature, also move the "termcap" file to
- X your game directory. (Note: GCC's termcap routines have built-in
- X defaults, so the termcap file is not necessary with that compiler.)
- X
- X To use funky graphics charaters in TOS, uudecode "atarifnt.uue" and unarc
- X the resulting "atarifnt.arc". This contains a program to run that makes
- X some line graphics characters available to NetHack. To use them, uncomment
- X the appropriate line in your NetHack.cnf file, and run the program before
- X running NetHack (you can put the program in an AUTO folder if you want).
- X
- X If you'll be running NetHack from a different subdirectory, you will
- X want to "set HACKDIR=\games\nethack" (or whatever directory you want to
- X use) now. Add it to your autoexec.bat (in DOS), if you'll be playing
- X often.
- X
- X11. Play NetHack. If it works, you're done!
- X
- X
- XNotes
- X-----
- X
- X1) Save files and bones files from previous versions will not work with
- X NetHack 3.0. Don't bother trying to keep them. Record (score) files
- X from before 3.0 patchlevel 7 will almost work, but you need to make one
- X change manually to them: At the end of each line is a word or phrase
- X specifying what killed the player. Change the string to start with the
- X words "killed by", "killed by a", or "killed by an" (whichever is
- X appropriate). If the death was petrification, it should read "petrified
- X by" instead of "killed by". Don't change "starvation", "quit", "escaped",
- X or "ascended".
- X
- X2) To install an update of NetHack after changing something, enter "make"
- X from the src directory. If you add, delete, or reorder monsters or
- X objects, or you change the format of saved level files, delete any save
- X and bones files. (Trying to use such files sometimes produces amusing
- X confusions on the game's part, but usually crashes.)
- X
- X3) While making the PC and OS/2 versions, during linking the Microsoft
- X Overlay Linker will need temporary storage space. Make sure you have
- X about a meg of free disk where ever you have defined your temporary
- X storage.
- X
- X4) About overlays:
- X
- X First and foremost: We have been developing with MSC 5.1 as a compiler
- X and NDmake 4.5 as a make. NDmake is readily available on the Usenet,
- X obtaining MSC might be more of a problem. MSC 5.0 is broken. You *will
- X not* be able to compile the overlay version with that compiler due to
- X problems with the /Gt option allowing the CONST segment to become
- X > 64k when linking.
- X
- X Anyone who uses Turbo C is free to try to compile the game. Not only does
- X TLINK not do overlays, it chokes on huge projects, so you will need to use
- X some other linker, probably the Microsoft Overlay Linker. Also,
- X you will more than likely have to find a way to tell the compiler to
- X keep most of your data out of the default data segment (whence the mystic
- X /Gt24 for MSC in Makefile.ovl). Certain other problems can probably be
- X anticipated. Feel free to try other compilers and linkers and please do
- X inform us if you succeed.
- X
- X If you use the custom overlay manager, ovlmgr.asm, you will want to use
- X Makefile.ovl. Otherwise you will have to roll your own make file;
- X Makefile.ovl may serve you as a stylistic guide, but ovlmgr's optimisation
- X characteristics are very different from those of (for example) the
- X standard Microsoft Overlay Manager: you will find the actual partitioning
- X of the overlays entirely inappropriate to a more conventional system.
- X
- X To make the game, follow the instructions above for arrangement of files
- X from the others directory to src. If you are using the standard Microsoft
- X Overlay Linker (which we have been assuming you are) you should make doubly
- X certain that OVERLAY is defined in pcconf.h, since otherwise things will
- X compile properly but very ugly things are likely to happen wherever
- X function pointers cross overlay boundaries - the linker is a little thick
- X about that. Now check the variables at the top of the makefile for
- X correctness on your system. Once you have the compiler, linker, source
- X files moved, and the include files configured, go to the src directory and
- X type "make install".
- X
- X RAM requirement for the overlay version is about 550k. You can load the
- X program in less RAM, but you will begin to experience a serious amount
- X of disk thrashing at 530k or less. Absolute minimum will probably be in
- X the neighborhood of 400-425k. You do not want to run the program like
- X that! And, as always, the more free RAM the better.
- X
- X As of patch level 7, version 3.0 has an added feature in the Makefile. This
- X feature enables a structured break up of the object modules so that we
- X can link heavily used functions together without actual source code
- X movement. This has provided a great speed improvement for this release.
- X
- X The versions of the software we used are:
- X
- X MS Overlay Linker 3.65
- X MSC 5.1
- X MASM 5.1
- X
- X NDMake 4.5
- X
- X On a 286 10MHz PC you will have nethack in about 2 - 2.5 hours.
- X Hope you enjoy the game. We have worked very hard to try to bring it back
- X to the PC.
- END_OF_FILE
- if test 16432 -ne `wc -c <'Install.dos'`; then
- echo shar: \"'Install.dos'\" unpacked with wrong size!
- fi
- # end of 'Install.dos'
- if test -f 'src/monst.c1' -a "${1}" != "-c" ; then
- echo shar: Renaming existing file \"'src/monst.c1'\" to \"'src/monst.c1.orig'\"
- mv -f 'src/monst.c1' 'src/monst.c1.orig'
- fi
- echo shar: Extracting \"'src/monst.c1'\" \(39815 characters\)
- sed "s/^X//" >'src/monst.c1' <<'END_OF_FILE'
- X/* SCCS Id: @(#)monst.c 3.0 89/11/21
- X/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
- X/* NetHack may be freely redistributed. See license for details. */
- X
- X/* since this file is also used in auxiliary programs, don't include all the
- X * function declarations for all of nethack
- X */
- X#define EXTERN_H
- X#include "config.h"
- X#include "permonst.h"
- X#include "monsym.h"
- X#include "eshk.h"
- X#include "vault.h"
- X#include "epri.h"
- X
- X#define NO_ATTK { 0, 0, 0, 0 }
- X
- X#ifdef C
- X#undef C
- X#endif
- X#ifdef TEXTCOLOR
- X#include "color.h"
- X#define C(color) color
- X#define HI_DOMESTIC WHITE /* use for player + friendlies */
- X#define HI_LORD MAGENTA
- X#else
- X#define C(color)
- X#endif
- X
- X#ifndef SPLITMON_2
- Xstruct permonst playermon = { /* used by weapons bonus code */
- X "player", S_HUMAN, 1, 10, 10, 0, 0, G_GENO | G_NOGEN,
- X { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 45, 400, PL_NSIZ, MS_SILENT, MZ_HUMAN,
- X M1_NEEDPICK | M1_HUMANOID | M1_COLLECT,
- X M2_HUMAN | M2_STRONG, C(HI_DOMESTIC)
- X}, *uasmon = &playermon;
- X#endif /* SPLITMON_2 */
- X
- X/*
- X * Rule #1: monsters of a given class are contiguous in the
- X * mons[] array.
- X *
- X * Rule #2: monsters of a given class are presented in ascending
- X * order of strength.
- X *
- X * Rule #3: monster frequency is included in the geno mask;
- X * the frequency can be from 0 to 7. 0's will also
- X * be skipped during generation.
- X *
- X * Guidelines for color assignment:
- X *
- X * * Use the same color for all `growth stages' of a monster (ex.
- X * little dog/big dog, baby naga/full-grown naga.
- X *
- X * * Use colors given in names wherever possible. If the class has `real'
- X * members with strong color associations, use those.
- X *
- X * * Favor `cool' colors for cold-resistent monsters, `warm' ones for
- X * fire-resistent ones.
- X *
- X * * Try to reserve purple (magenta) for powerful `ruler' monsters (queen
- X * bee, kobold lord, &c.).
- X *
- X * * Subject to all these constraints, try to use color to make as many
- X * distinctions as the / command (that is, within a monster letter
- X * distinct names should map to distinct colors).
- X *
- X * The aim in assigning colors is to be consistent enough so a player can
- X * become `intuitive' about them, deducing some or all of these rules
- X * unconsciously. Use your common sense.
- X */
- X
- X#if defined(SMALLDATA) && !defined(MAKEDEFS_C)
- X /* if it's for SMALLDATA, say so, right? (KL) */
- Xstruct permonst *mons; /* for SMALLDATA - mons data stored in NetHack app */
- X#else
- X#ifndef SPLITMON_2
- Xstruct permonst mons[] = {
- X/* ants */
- X { "giant ant", S_ANT, 2, 18, 3, 0, 0, (G_GENO | G_SGROUP | 3),
- X { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 1, 10, 0, MS_SILENT, MZ_TINY, M1_ANIMAL | M1_NOHANDS,
- X M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(BROWN) },
- X { "soldier ant", S_ANT, 3, 18, 3, 0, 0, (G_GENO | G_SGROUP | 2),
- X { { AT_BITE, AD_PHYS, 2, 4 }, { AT_STNG, AD_DRST, 3, 4 },
- X NO_ATTK, NO_ATTK, NO_ATTK }, 2, 20, 0, MS_SILENT, MZ_TINY,
- X M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_POIS_RES,
- X M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(BLUE) },
- X { "fire ant", S_ANT, 3, 18, 3, 10, 0, (G_GENO | G_SGROUP | 1),
- X { { AT_BITE, AD_FIRE, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 3, 30, 0, MS_SILENT, MZ_TINY, M1_ANIMAL | M1_NOHANDS | M1_FIRE_RES,
- X M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(RED) },
- X { "giant beetle", S_ANT, 5, 6, 4, 0, 0, (G_GENO | 3),
- X { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 1, 10, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_NOHANDS | M1_POIS |
- X M1_POIS_RES, M2_HOSTILE | M2_CARNIVORE, C(BLACK) },
- X { "killer bee", S_ANT, 1, 18, -1, 0, 0, (G_GENO | G_LGROUP | 2),
- X { { AT_STNG, AD_DRST, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 1, 10, 0, MS_BUZZ, MZ_TINY, M1_ANIMAL | M1_FLY | M1_NOHANDS |
- X M1_POIS | M1_POIS_RES, M2_HOSTILE, C(YELLOW) },
- X { "queen bee", S_ANT, 9, 24, -4, 0, 0, (G_GENO | G_NOGEN),
- X { { AT_STNG, AD_DRST, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 1, 10, 0, MS_BUZZ, MZ_TINY, M1_ANIMAL | M1_FLY | M1_NOHANDS |
- X M1_POIS | M1_POIS_RES, M2_HOSTILE | M2_PRINCE, C(HI_LORD) },
- X/* blobs */
- X { "acid blob", S_BLOB, 1, 3, 8, 0, 0, (G_GENO | 2),
- X { { AT_NONE, AD_ACID, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 3, 30, 0, MS_SILENT, MZ_TINY,
- X M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_SLEE_RES | M1_STON_RES |
- X M1_ACID, M2_WANDER, C(GREEN) },
- X { "quivering blob", S_BLOB, 5, 1, 8, 0, 0, (G_GENO | 2),
- X { { AT_TUCH, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_SILENT, MZ_SMALL,
- X M1_NOEYES | M1_NOLIMBS | M1_POIS_RES,
- X M2_WANDER | M2_HOSTILE, C(WHITE) },
- X { "gelatinous cube", S_BLOB, 6, 6, 8, 0, 0, (G_GENO | 2),
- X { { AT_TUCH, AD_PLYS, 2, 4 }, { AT_NONE, AD_PLYS, 1, 4 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 300, 0, MS_SILENT, MZ_LARGE,
- X M1_NOEYES | M1_NOLIMBS | M1_FIRE_RES | M1_COLD_RES | M1_ELEC_RES |
- X M1_SLEE_RES, M2_WANDER | M2_HOSTILE | M2_OMNIVORE, C(CYAN) },
- X/* cockatrice */
- X { "cockatrice", S_COCKATRICE, 5, 6, 6, 30, 0, (G_GENO | 5),
- X { { AT_BITE, AD_PHYS, 1, 3 }, { AT_TUCH, AD_STON, 0, 0 },
- X { AT_NONE, AD_STON, 0, 0 }, NO_ATTK, NO_ATTK },
- X 3, 30, 0, MS_HISS, MZ_SMALL,
- X M1_ANIMAL | M1_NOHANDS | M1_POIS_RES | M1_STON_RES,
- X M2_HOSTILE | M2_EGGS, C(YELLOW) },
- X/* dog */
- X { "little dog", S_DOG, 2, 18, 6, 0, 0, (G_GENO | 1),
- X { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 15, 150, 0, MS_BARK, MZ_SMALL,
- X M1_ANIMAL | M1_NOHANDS, M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
- X { "dog", S_DOG, 4, 16, 5, 0, 0, (G_GENO | 1),
- X { { AT_BITE, AD_PHYS, 1 ,6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_BARK, MZ_MEDIUM,
- X M1_ANIMAL | M1_NOHANDS, M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
- X { "large dog", S_DOG, 6, 15, 4, 0, 0, (G_GENO | 1),
- X { { AT_BITE, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 25, 250, 0, MS_BARK, MZ_MEDIUM,
- X M1_ANIMAL | M1_NOHANDS, M2_STRONG | M2_CARNIVORE | M2_DOMESTIC,
- X C(HI_DOMESTIC) },
- X { "jackal", S_DOG, 0, 12, 7, 0, 0, (G_GENO | G_SGROUP | 3),
- X { { AT_BITE, AD_PHYS, 1, 2 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 25, 250, 0, MS_BARK, MZ_SMALL,
- X M1_ANIMAL | M1_NOHANDS, M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
- X { "jackalwere", S_DOG, 2, 12, 7, 10, -7, G_NOGEN | G_NOCORPSE,
- X { { AT_BITE, AD_WERE, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 25, 250, 0, MS_BARK, MZ_SMALL,
- X M1_NOPOLY | M1_NOHANDS | M1_POIS | M1_REGEN,
- X M2_WERE | M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
- X { "wolf", S_DOG, 5, 12, 4, 0, 0, (G_GENO | G_SGROUP | 2),
- X { { AT_BITE, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 25, 250, 0, MS_BARK, MZ_SMALL,
- X M1_ANIMAL | M1_NOHANDS, M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
- X { "wolfwere", S_DOG, 5, 12, 4, 20, -7, G_NOGEN | G_NOCORPSE,
- X { { AT_BITE, AD_WERE, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 25, 250, 0, MS_BARK, MZ_MEDIUM,
- X M1_NOPOLY | M1_NOHANDS | M1_POIS | M1_REGEN,
- X M2_WERE | M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
- X { "winter wolf", S_DOG, 7, 12, 4, 0, 0, (G_GENO | 1),
- X { { AT_BITE, AD_PHYS, 2, 6 }, { AT_BREA, AD_COLD, 2, 6 },
- X NO_ATTK, NO_ATTK, NO_ATTK, },
- X 30, 300, 0, MS_BARK, MZ_LARGE, M1_ANIMAL | M1_NOHANDS | M1_COLD_RES,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(CYAN) },
- X { "warg", S_DOG, 7, 12, 4, 0, -5, (G_GENO | G_SGROUP | 2),
- X { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 35, 350, 0, MS_BARK, MZ_MEDIUM, M1_ANIMAL | M1_NOHANDS,
- X M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
- X { "hell hound pup", S_DOG, 7, 12, 4, 20, -5,
- X (G_HELL | G_GENO | G_SGROUP | 1),
- X { { AT_BITE, AD_PHYS, 2, 6 }, { AT_BREA, AD_FIRE, 2, 6 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_BARK, MZ_SMALL, M1_ANIMAL | M1_NOHANDS | M1_FIRE_RES,
- X M2_HOSTILE | M2_CARNIVORE, C(RED) },
- X { "hell hound", S_DOG, 12, 14, 2, 20, 0, (G_HELL | G_GENO | 1),
- X { { AT_BITE, AD_PHYS, 3, 6 }, { AT_BREA, AD_FIRE, 3, 6 },
- X NO_ATTK, NO_ATTK, NO_ATTK, },
- X 30, 300, 0, MS_BARK, MZ_MEDIUM, M1_ANIMAL | M1_NOHANDS | M1_FIRE_RES,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
- X#ifdef CHARON
- X { "Cerberus", S_DOG, 12, 10, 2, 20, -7, (G_HELL | G_UNIQ | 1),
- X { { AT_BITE, AD_PHYS, 3, 6 }, { AT_BITE, AD_PHYS, 3, 6 },
- X { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK },
- X 50, 350, 0, MS_BARK, MZ_LARGE,
- X M1_NOPOLY | M1_ANIMAL | M1_NOHANDS | M1_FIRE_RES,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_PNAME, C(RED) },
- X#endif
- X/* eyes */
- X { "floating eye", S_EYE, 2, 1, 9, 10, 0, (G_GENO | 5),
- X { { AT_NONE, AD_PLYS, 0, 70 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 1, 10, 0, MS_SILENT, MZ_SMALL,
- X M1_FLY | M1_NOLIMBS, M2_HOSTILE, C(BLUE) },
- X { "freezing sphere", S_EYE, 6, 13, 4, 0, 0, (G_GENO | 2),
- X { { AT_EXPL, AD_COLD, 4, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 1, 10, 0, MS_SILENT, MZ_SMALL,
- X M1_FLY | M1_NOLIMBS | M1_COLD_RES, M2_HOSTILE, C(WHITE) },
- X/* felines */
- X { "kitten", S_FELINE, 2, 18, 6, 0, 0, (G_GENO | 1),
- X { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 15, 150, 0, MS_MEW, MZ_SMALL, M1_ANIMAL | M1_NOHANDS,
- X M2_WANDER | M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
- X { "housecat", S_FELINE, 4, 16, 5, 0, 0, (G_GENO | 1),
- X { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_MEW, MZ_SMALL, M1_ANIMAL | M1_NOHANDS,
- X M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
- X { "large cat", S_FELINE, 6, 15, 4, 0, 0, (G_GENO | 1),
- X { { AT_BITE, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 25, 250, 0, MS_MEW, MZ_SMALL, M1_ANIMAL | M1_NOHANDS,
- X M2_STRONG | M2_CARNIVORE | M2_DOMESTIC, C(HI_DOMESTIC) },
- X { "jaguar", S_FELINE, 4, 15, 6, 0, 0, (G_GENO | 2),
- X { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
- X { AT_BITE, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK },
- X 30, 300, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
- X M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
- X { "tiger", S_FELINE, 6, 12, 6, 0, 0, (G_GENO | 2),
- X { { AT_CLAW, AD_PHYS, 2, 4 }, { AT_CLAW, AD_PHYS, 2, 4 },
- X { AT_BITE, AD_PHYS, 1, 10 }, NO_ATTK, NO_ATTK },
- X 30, 300, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
- X M2_HOSTILE | M2_CARNIVORE, C(YELLOW) },
- X/* gremlins */
- X { "gremlin", S_GREMLIN, 5, 12, 2, 25, -9, (G_GENO | 2),
- X { { AT_CLAW, AD_PHYS, 1, 6 }, { AT_CLAW, AD_PHYS, 1, 6 },
- X { AT_BITE, AD_PHYS, 1, 4 }, { AT_CLAW, AD_CURS, 0, 0 }, NO_ATTK },
- X 10, 30, 0, MS_LAUGH, MZ_SMALL,
- X M1_SWIM | M1_HUMANOID | M1_POIS, M2_STALK, C(GREEN) },
- X/* humanoids */
- X#ifdef TOLKIEN
- X { "hobbit", S_HUMANOID, 1, 9, 7, 0, 6, (G_GENO | 2),
- X { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_HUMANOID, MZ_SMALL,
- X M1_HUMANOID | M1_COLLECT, 0, C(GREEN) },
- X#endif
- X { "bugbear", S_HUMANOID, 3, 9, 5, 0, -6, (G_GENO | 1),
- X { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 25, 250, 0, MS_GROWL, MZ_LARGE, M1_HUMANOID | M1_COLLECT,
- X M2_STRONG, C(BROWN) },
- X { "dwarf", S_HUMANOID, 2, 6, 4, 10, 4, (G_GENO | 3),
- X { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 300, 0, MS_HUMANOID, MZ_HUMAN,
- X M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_GREEDY | M1_JEWELS |
- X M1_COLLECT, M2_DWARF | M2_STRONG, C(RED) },
- X { "dwarf lord", S_HUMANOID, 4, 6, 4, 10, 5, (G_GENO | 2),
- X { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
- X NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_HUMANOID, MZ_HUMAN,
- X M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_GREEDY | M1_JEWELS |
- X M1_COLLECT, M2_DWARF | M2_STRONG | M2_LORD, C(BLUE) },
- X { "dwarf king", S_HUMANOID, 6, 6, 4, 20, 6, (G_GENO | 1),
- X { { AT_WEAP, AD_PHYS, 2, 6 }, { AT_WEAP, AD_PHYS, 2, 6 },
- X NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_HUMANOID, MZ_HUMAN,
- X M1_TUNNEL | M1_NEEDPICK | M1_HUMANOID | M1_GREEDY | M1_JEWELS |
- X M1_COLLECT, M2_DWARF | M2_STRONG | M2_PRINCE, C(HI_LORD) },
- X/* imps & other minor demons/devils */
- X { "manes", S_IMP, 1, 3, 7, 0, -7, (G_GENO | G_LGROUP | G_NOCORPSE | 1),
- X { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_CLAW, AD_PHYS, 1, 3 },
- X { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK },
- X 10, 100, 0, MS_CUSS, MZ_SMALL, M1_POIS, M2_STALK, C(RED) },
- X { "homunculus", S_IMP, 2, 12, 6, 10, -7, (G_GENO | 2),
- X { { AT_BITE, AD_SLEE, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_SILENT, MZ_TINY,
- X M1_FLY | M1_POIS | M1_POIS_RES | M1_SLEE_RES, M2_STALK, C(GREEN) },
- X { "lemure", S_IMP, 3, 3, 7, 0, -7,
- X (G_HELL | G_GENO | G_LGROUP | G_NOCORPSE | 1),
- X { { AT_CLAW, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 10, 100, 0, MS_SILENT, MZ_MEDIUM, M1_POIS | M1_SLEE_RES | M1_REGEN,
- X M2_HOSTILE | M2_WANDER | M2_STALK, C(BROWN) },
- X { "imp", S_IMP, 3, 12, 2, 20, -7, (G_GENO | 1),
- X { { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 1, 10, 0, MS_CUSS, MZ_TINY, M1_REGEN, M2_WANDER | M2_STALK, C(RED) },
- X { "quasit", S_IMP, 3, 15, 2, 20, -7, (G_GENO | 2),
- X { { AT_CLAW, AD_DRDX, 1, 2 }, { AT_CLAW, AD_DRDX, 1, 2 },
- X { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_SILENT, MZ_SMALL,
- X M1_POIS_RES | M1_REGEN, M2_STALK, C(BLUE) },
- X { "tengu", S_IMP, 6, 13, 5, 30, 7, (G_GENO | 3),
- X { { AT_BITE, AD_PHYS, 1, 7 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 300, 0, MS_SQAWK, MZ_SMALL,
- X M1_POIS_RES | M1_TPORT | M1_TPORT_CONTROL, M2_STALK, C(CYAN) },
- X/* jellies */
- X { "blue jelly", S_JELLY, 4, 0, 8, 10, 0, (G_GENO | 2),
- X { { AT_NONE, AD_COLD, 0, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 2, 20, 0, MS_SILENT, MZ_MEDIUM,
- X M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_COLD_RES | M1_POIS_RES,
- X M2_HOSTILE | M2_OMNIVORE, C(BLUE) },
- X { "spotted jelly", S_JELLY, 5, 0, 8, 10, 0, (G_GENO | 1),
- X { { AT_NONE, AD_ACID, 0, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 2, 20, 0, MS_SILENT, MZ_MEDIUM,
- X M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_STON_RES | M1_ACID,
- X M2_HOSTILE | M2_OMNIVORE, C(GREEN) },
- X { "ochre jelly", S_JELLY, 6, 3, 8, 20, 0, (G_GENO | 2),
- X { { AT_ENGL, AD_ACID, 3, 6 }, { AT_NONE, AD_ACID, 0, 6 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 2, 20, 0, MS_SILENT, MZ_MEDIUM,
- X M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_STON_RES | M1_ACID,
- X M2_HOSTILE | M2_OMNIVORE, C(BROWN) },
- X/* kobolds */
- X { "kobold", S_KOBOLD, 0, 6, 7, 0, -2, (G_GENO | 1),
- X { { AT_WEAP, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 10, 100, 0, MS_ORC, MZ_SMALL, M1_HUMANOID | M1_POIS | M1_COLLECT,
- X M2_HOSTILE, C(BROWN) },
- X { "large kobold", S_KOBOLD, 1, 6, 6, 0, -3, (G_GENO | 1),
- X { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 15, 150, 0, MS_ORC, MZ_SMALL, M1_HUMANOID | M1_POIS | M1_COLLECT,
- X M2_HOSTILE, C(RED) },
- X { "kobold lord", S_KOBOLD, 2, 6, 5, 0, -4, (G_GENO | 1),
- X { { AT_WEAP, AD_PHYS, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_ORC, MZ_SMALL, M1_HUMANOID | M1_POIS | M1_COLLECT,
- X M2_HOSTILE | M2_LORD, C(HI_LORD) },
- X { "kobold shaman", S_KOBOLD, 1, 6, 6, 10, -4, (G_GENO | 1),
- X { { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 15, 150, 0, MS_ORC, MZ_SMALL, M1_HUMANOID | M1_POIS | M1_MAGIC,
- X M2_HOSTILE, C(HI_ZAP) },
- X/* leprechauns */
- X { "leprechaun", S_LEPRECHAUN, 5, 15, 8, 20, 0, (G_GENO | 4),
- X { { AT_CLAW, AD_SGLD, 1, 2 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 300, 0, MS_LAUGH, MZ_TINY, M1_HUMANOID | M1_TPORT | M1_GREEDY,
- X M2_HOSTILE, C(GREEN) },
- X/* mimics */
- X { "small mimic", S_MIMIC, 7, 3, 7, 0, 0, (G_GENO | 2),
- X { { AT_CLAW, AD_PHYS, 3, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_SILENT, MZ_MEDIUM,
- X M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
- X M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
- X { "large mimic", S_MIMIC, 8, 3, 7, 10, 0, (G_GENO | 1),
- X { { AT_CLAW, AD_STCK, 3, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 40, 400, 0, MS_SILENT, MZ_LARGE,
- X M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
- X { "giant mimic", S_MIMIC, 9, 3, 7, 20, 0, (G_GENO | 1),
- X { { AT_CLAW, AD_STCK, 3, 6 }, { AT_CLAW, AD_STCK, 3, 6 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 60, 500, 0, MS_SILENT, MZ_LARGE,
- X M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(HI_LORD) },
- X/* nymphs */
- X { "wood nymph", S_NYMPH, 3, 12, 9, 20, 0, (G_GENO | 2),
- X { { AT_CLAW, AD_SITM, 0, 0 }, { AT_CLAW, AD_SEDU, 0, 0 },
- X NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_SEDUCE, MZ_HUMAN,
- X M1_HUMANOID | M1_TPORT | M1_COLLECT, M2_HOSTILE | M2_FEM, C(GREEN) },
- X { "water nymph", S_NYMPH, 3, 12, 9, 20, 0, (G_GENO | 2),
- X { { AT_CLAW, AD_SITM, 0, 0 }, { AT_CLAW, AD_SEDU, 0, 0 },
- X NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_SEDUCE, MZ_HUMAN,
- X M1_HUMANOID | M1_TPORT | M1_COLLECT | M1_SWIM,
- X M2_HOSTILE | M2_FEM, C(BLUE) },
- X { "mountain nymph", S_NYMPH, 3, 12, 9, 20, 0, (G_GENO | 2),
- X { { AT_CLAW, AD_SITM, 0, 0 }, { AT_CLAW, AD_SEDU, 0, 0 },
- X NO_ATTK, NO_ATTK, NO_ATTK }, 30, 300, 0, MS_SEDUCE, MZ_HUMAN,
- X M1_HUMANOID | M1_TPORT | M1_COLLECT, M2_HOSTILE | M2_FEM, C(BROWN) },
- X/* orcs */
- X { "goblin", S_ORC, 0, 6, 6, 0, -3, (G_GENO | 2),
- X { { AT_WEAP, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 10, 100, 0, MS_ORC, MZ_SMALL,
- X M1_HUMANOID | M1_COLLECT, M2_ORC, C(GRAY) },
- X { "hobgoblin", S_ORC, 1, 9, 6, 0, -4, (G_GENO | 2),
- X { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_ORC, MZ_HUMAN,
- X M1_HUMANOID | M1_COLLECT, M2_ORC | M2_STRONG, C(BROWN) },
- X /* "orc" for zombie corpses only; they don't get created at random */
- X { "orc", S_ORC, 1, 9, 6, 0, -3, (G_GENO | G_NOGEN | G_LGROUP),
- X { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 15, 150, 0, MS_ORC, MZ_HUMAN,
- X M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
- X M2_ORC | M2_HOSTILE | M2_STRONG, C(RED) },
- X { "hill orc", S_ORC, 2, 9, 6, 0, -4, (G_GENO | G_LGROUP | 2),
- X { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_ORC, MZ_HUMAN,
- X M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
- X M2_ORC | M2_HOSTILE | M2_STRONG, C(YELLOW) },
- X#ifdef TOLKIEN
- X { "Mordor orc", S_ORC, 3, 5, 6, 0, -5, (G_GENO | G_LGROUP | 1),
- X { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_ORC, MZ_HUMAN,
- X M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
- X M2_ORC | M2_HOSTILE | M2_STRONG, C(BLUE) },
- X { "Uruk-hai", S_ORC, 3, 7, 5, 0, -4, (G_GENO | G_LGROUP | 1),
- X { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 300, 0, MS_ORC, MZ_HUMAN,
- X M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
- X M2_ORC | M2_HOSTILE | M2_STRONG, C(BLACK) },
- X#endif
- X { "orc shaman", S_ORC, 3, 9, 5, 10, -5, (G_GENO | 1),
- X { { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 300, 0, MS_ORC, MZ_HUMAN,
- X M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_MAGIC,
- X M2_ORC | M2_HOSTILE | M2_STRONG, C(HI_ZAP) },
- X { "orc-captain", S_ORC, 5, 5, 4, 0, -5, (G_GENO | 1),
- X { { AT_WEAP, AD_PHYS, 2, 4 }, { AT_WEAP, AD_PHYS, 2, 4 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 35, 350, 0, MS_ORC, MZ_HUMAN,
- X M1_HUMANOID | M1_GREEDY | M1_JEWELS | M1_COLLECT,
- X M2_ORC | M2_HOSTILE | M2_STRONG, C(HI_LORD) },
- X/* piercers */
- X { "rock piercer", S_PIERCER, 3, 1, 3, 0, 0, (G_GENO | 2),
- X { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 200, 0, MS_SILENT, MZ_SMALL,
- X M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
- X M2_HOSTILE | M2_CARNIVORE, C(GRAY) },
- X { "iron piercer", S_PIERCER, 5, 1, 0, 0, 0, (G_GENO | 1),
- X { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 40, 300, 0, MS_SILENT, MZ_MEDIUM,
- X M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
- X M2_HOSTILE | M2_CARNIVORE, C(CYAN) },
- X/* quadrupeds (generic) */
- X { "rothe", S_QUADRUPED, 2, 9, 7, 0, 0, (G_GENO | G_SGROUP | 4),
- X { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_BITE, AD_PHYS, 1, 3 },
- X { AT_BITE, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK },
- X 10, 100, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
- X M2_HOSTILE | M2_CARNIVORE, C(GRAY) },
- X#ifdef TOLKIEN
- X { "mumakil", S_QUADRUPED, 5, 9, 0, 0, -2, (G_GENO | 1),
- X { { AT_BUTT, AD_PHYS, 4, 12 }, { AT_BITE, AD_PHYS, 2, 6 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 70, 500, 0, MS_SILENT, MZ_LARGE,
- X M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(GRAY) },
- X#endif
- X { "leocrotta", S_QUADRUPED, 6, 18, 4, 10, 0, (G_GENO | 2),
- X { { AT_CLAW, AD_PHYS, 2, 6 }, { AT_BITE, AD_PHYS, 2, 6 },
- X { AT_CLAW, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK },
- X 50, 500, 0, MS_IMITATE, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
- X { "wumpus", S_QUADRUPED, 8, 3, 2, 10, 0, (G_GENO | 1),
- X { { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 50, 500, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_NOHANDS,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(CYAN) },
- X { "titanothere", S_QUADRUPED, 12, 12, 6, 0, 0, (G_GENO | 2),
- X { { AT_CLAW, AD_PHYS, 2, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 65, 650, 0, MS_SILENT, MZ_LARGE,
- X M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(GRAY) },
- X { "baluchitherium", S_QUADRUPED, 14, 12, 5, 0, 0, (G_GENO | 2),
- X { { AT_CLAW, AD_PHYS, 5, 4 }, { AT_CLAW, AD_PHYS, 5, 4 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 80, 800, 0, MS_SILENT, MZ_LARGE,
- X M1_ANIMAL | M1_THICK_HIDE | M1_NOHANDS,
- X M2_HOSTILE | M2_STRONG | M2_HERBIVORE, C(GRAY) },
- X/* rodents */
- X { "sewer rat", S_RODENT, 0, 12, 7, 0, 0, (G_GENO | G_SGROUP | 1),
- X { { AT_BITE, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 2, 20, 0, MS_SQEEK, MZ_TINY, M1_ANIMAL | M1_NOHANDS,
- X M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
- X { "giant rat", S_RODENT, 1, 10, 7, 0, 0, (G_GENO | G_SGROUP | 2),
- X { { AT_BITE, AD_PHYS, 1, 3 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 3, 30, 0, MS_SQEEK, MZ_TINY, M1_ANIMAL | M1_NOHANDS,
- X M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
- X { "rabid rat", S_RODENT, 2, 12, 6, 0, 0, (G_GENO | 1),
- X { { AT_BITE, AD_DRCO, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 3, 10, 0, MS_SQEEK, MZ_TINY, M1_ANIMAL | M1_NOHANDS | M1_POIS,
- X M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
- X { "ratwere", S_RODENT, 2, 12, 6, 10, -7, G_NOGEN | G_NOCORPSE,
- X { { AT_BITE, AD_WERE, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 3, 30, 0, MS_SQEEK, MZ_TINY, M1_NOHANDS | M1_NOPOLY |
- X M1_POIS | M1_REGEN, M2_WERE | M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
- X { "rock mole", S_RODENT, 3, 3, 0, 20, 0, (G_GENO | 2),
- X { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 3, 30, 0, MS_SILENT, MZ_SMALL,
- X M1_TUNNEL | M1_ANIMAL | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_COLLECT, M2_HOSTILE | M2_METALLIVORE, C(GRAY) },
- X/* spiders and scorpions */
- X { "cave spider", S_SPIDER, 1, 12, 3, 0, 0, (G_GENO | G_SGROUP | 2),
- X { { AT_BITE, AD_PHYS, 1, 2 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 5, 50, 0, MS_SILENT, MZ_TINY,
- X M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_POIS_RES,
- X M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(GRAY) },
- X { "scorpion", S_SPIDER, 5, 15, 3, 0, 0, (G_GENO | 2),
- X { { AT_CLAW, AD_PHYS, 1, 2 }, { AT_CLAW, AD_PHYS, 1, 2 },
- X { AT_STNG, AD_DRST, 1, 4 }, NO_ATTK, NO_ATTK },
- X 10, 100, 0, MS_SILENT, MZ_SMALL,
- X M1_CONCEAL | M1_ANIMAL | M1_NOHANDS | M1_POIS,
- X M2_HOSTILE | M2_CARNIVORE | M2_EGGS, C(RED) },
- X { "giant spider", S_SPIDER, 5, 15, 4, 0, 0, (G_GENO | 1),
- X { { AT_BITE, AD_DRST, 2, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 10, 100, 0, MS_SILENT, MZ_LARGE,
- X M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_POIS_RES,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE | M2_EGGS, C(MAGENTA) },
- X/* trappers, lurkers, &c. */
- X { "lurker above", S_TRAPPER, 10, 3, 3, 0, 0, (G_GENO | 2),
- X { { AT_ENGL, AD_DGST, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 40, 350, 0, MS_SILENT, MZ_HUGE,
- X M1_HIDE | M1_FLY | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
- X M2_HOSTILE | M2_STALK | M2_STRONG | M2_CARNIVORE, C(GRAY) },
- X { "trapper", S_TRAPPER, 12, 3, 3, 0, 0, (G_GENO | 2),
- X { { AT_ENGL, AD_DGST, 1, 10 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 40, 350, 0, MS_SILENT, MZ_HUGE,
- X M1_HIDE | M1_ANIMAL | M1_NOEYES | M1_NOLIMBS,
- X M2_HOSTILE | M2_STALK | M2_STRONG | M2_CARNIVORE, C(GREEN) },
- X/* unicorns */
- X { "white unicorn", S_UNICORN, 4, 24, 2, 70, 7, (G_GENO | 2),
- X { { AT_BUTT, AD_PHYS, 1, 12 }, { AT_KICK, AD_PHYS, 1, 6 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 300, 0, MS_NEIGH, MZ_LARGE, M1_NOHANDS | M1_POIS_RES | M1_JEWELS,
- X M2_WANDER | M2_STRONG | M2_HERBIVORE, C(WHITE) },
- X { "gray unicorn", S_UNICORN, 4, 24, 2, 70, 0, (G_GENO | 1),
- X { { AT_BUTT, AD_PHYS, 1, 12 }, { AT_KICK, AD_PHYS, 1, 6 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 300, 0, MS_NEIGH, MZ_LARGE, M1_NOHANDS | M1_POIS_RES | M1_JEWELS,
- X M2_WANDER | M2_STRONG | M2_HERBIVORE, C(GRAY) },
- X { "black unicorn", S_UNICORN, 4, 24, 2, 70, -7, (G_GENO | 1),
- X { { AT_BUTT, AD_PHYS, 1, 12 }, { AT_KICK, AD_PHYS, 1, 6 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 300, 0, MS_NEIGH, MZ_LARGE, M1_NOHANDS | M1_POIS_RES | M1_JEWELS,
- X M2_WANDER | M2_STRONG | M2_HERBIVORE, C(BLACK) },
- X/* vortices */
- X { "fog cloud", S_VORTEX, 3, 1, 0, 0, 0, (G_GENO | G_NOCORPSE | 2),
- X { { AT_ENGL, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 10, 0, 0, MS_SILENT, MZ_HUGE,
- X M1_FLY | M1_AMORPHOUS | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES,
- X M2_HOSTILE, C(GRAY) },
- X { "dust vortex", S_VORTEX, 4, 20, 2, 30, 0, (G_GENO | G_NOCORPSE | 2),
- X { { AT_ENGL, AD_BLND, 2, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 0, 0, MS_SILENT, MZ_HUGE,
- X M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES, M2_HOSTILE, C(BROWN) },
- X { "energy vortex", S_VORTEX, 6, 20, 2, 30, 0, (G_GENO | G_NOCORPSE | 1),
- X { { AT_ENGL, AD_ELEC, 1, 6 }, { AT_ENGL, AD_DREN, 0, 0 },
- X { AT_NONE, AD_ELEC, 0, 4 }, NO_ATTK, NO_ATTK },
- X 20, 0, 0, MS_SILENT, MZ_HUGE,
- X M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_ELEC_RES,
- X M2_HOSTILE, C(HI_ZAP) },
- X { "ice vortex", S_VORTEX, 5, 20, 2, 30, 0, (G_GENO | G_NOCORPSE | 1),
- X { { AT_ENGL, AD_COLD, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 0, 0, MS_SILENT, MZ_HUGE,
- X M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_COLD_RES,
- X M2_HOSTILE, C(CYAN) },
- X { "steam vortex", S_VORTEX, 7, 22, 2, 30, 0,
- X (G_HELL | G_GENO | G_NOCORPSE | 2),
- X { { AT_ENGL, AD_FIRE, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 0, 0, MS_SILENT, MZ_HUGE,
- X M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_FIRE_RES,
- X M2_HOSTILE, C(BLUE) },
- X { "fire vortex", S_VORTEX, 8, 22, 2, 30, 0,
- X (G_HELL | G_GENO | G_NOCORPSE | 1),
- X { { AT_ENGL, AD_FIRE, 1, 10 }, { AT_NONE, AD_FIRE, 0, 4 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 0, 0, MS_SILENT, MZ_HUGE,
- X M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_FIRE_RES,
- X M2_HOSTILE, C(YELLOW) },
- X/* worms */
- X#ifdef WORM
- X { "baby long worm", S_WORM, 8, 3, 5, 0, 0, G_GENO,
- X { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 25, 250, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_SLITHY | M1_NOLIMBS,
- X M2_HOSTILE | M2_CARNIVORE, C(BROWN) },
- X#endif
- X { "baby purple worm", S_WORM, 8, 3, 5, 0, 0, G_GENO,
- X { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 25, 250, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_SLITHY | M1_NOLIMBS,
- X M2_HOSTILE | M2_CARNIVORE, C(MAGENTA) },
- X#ifdef WORM
- X { "long worm", S_WORM, 8, 3, 5, 10, 0, (G_GENO | 2),
- X { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 50, 500, 0, MS_SILENT, MZ_GIGANTIC,
- X M1_ANIMAL | M1_SLITHY | M1_NOLIMBS | M1_NOPOLY,
- X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
- X C(BROWN) },
- X#endif
- X { "purple worm", S_WORM, 15, 9, 6, 20, 0, (G_GENO | 2),
- X { { AT_BITE, AD_PHYS, 2, 8 }, { AT_ENGL, AD_DGST, 1, 10 },
- X NO_ATTK, NO_ATTK, NO_ATTK }, 70, 700, 0, MS_SILENT, MZ_GIGANTIC,
- X M1_ANIMAL | M1_SLITHY | M1_NOLIMBS,
- X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
- X C(MAGENTA) },
- X/* xan, &c. */
- X { "grid bug", S_XAN, 0, 12, 9, 0, 0,
- X (G_GENO | G_SGROUP | G_NOCORPSE | 3),
- X { { AT_BITE, AD_ELEC, 1, 1 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 5, 50, 0, MS_BUZZ, MZ_TINY, M1_ANIMAL | M1_ELEC_RES, M2_HOSTILE,
- X C(MAGENTA) },
- X { "xan", S_XAN, 7, 18, -4, 0, 0, (G_GENO | 3),
- X { { AT_STNG, AD_LEGS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 30, 300, 0, MS_BUZZ, MZ_TINY, M1_FLY | M1_ANIMAL | M1_NOHANDS |
- X M1_POIS | M1_POIS_RES, M2_HOSTILE, C(RED) },
- X/* yellow light */
- X { "yellow light", S_YLIGHT, 3, 15, 0, 0, 0, (G_GENO | 4),
- X { { AT_EXPL, AD_BLND, 10, 20 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 1, 10, 0, MS_SILENT, MZ_SMALL,
- X M1_FLY | M1_NOLIMBS, M2_HOSTILE, C(BRIGHT|YELLOW) },
- X/* zruty */
- X { "zruty", S_ZRUTY, 9, 8, 3, 0, 0, (G_GENO | 2),
- X { { AT_CLAW, AD_PHYS, 3, 4 }, { AT_CLAW, AD_PHYS, 3, 4 },
- X { AT_BITE, AD_PHYS, 3, 6 }, NO_ATTK, NO_ATTK },
- X 60, 600, 0, MS_SILENT, MZ_LARGE, M1_ANIMAL | M1_HUMANOID,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(BROWN) },
- X/* Apes */
- X { "ape", S_APE, 4, 12, 6, 0, 0, (G_GENO | G_SGROUP | 2),
- X { { AT_CLAW, AD_PHYS, 1, 3 }, { AT_CLAW, AD_PHYS, 1, 3 },
- X { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK },
- X 50, 500, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_HUMANOID,
- X M2_STRONG | M2_CARNIVORE, C(BROWN) },
- X { "carnivorous ape", S_APE, 5, 12, 6, 0, 0, (G_GENO | 1),
- X { { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 },
- X { AT_HUGS, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK },
- X 55, 550, 0, MS_GROWL, MZ_LARGE, M1_ANIMAL | M1_HUMANOID,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(BROWN) },
- X/* Bats */
- X { "bat", S_BAT, 0, 22, 8, 0, 0, (G_GENO | G_SGROUP | 1),
- X { { AT_BITE, AD_PHYS, 1, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 2, 20, 0, MS_SQEEK, MZ_TINY, M1_FLY | M1_ANIMAL | M1_NOHANDS,
- X M2_WANDER | M2_CARNIVORE, C(BROWN) },
- X { "giant bat", S_BAT, 2, 22, 7, 0, 0, (G_GENO | 2),
- X { { AT_BITE, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 3, 30, 0, MS_SQEEK, MZ_MEDIUM, M1_FLY | M1_ANIMAL | M1_NOHANDS,
- X M2_WANDER | M2_HOSTILE | M2_CARNIVORE, C(RED) },
- X { "vampire bat", S_BAT, 5, 20, 6, 0, 0, (G_GENO | 2),
- X { { AT_BITE, AD_PHYS, 1, 6 }, { AT_BITE, AD_DRST, 0, 0 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 3, 20, 0, MS_SQEEK, MZ_TINY,
- X M1_FLY | M1_ANIMAL | M1_NOHANDS | M1_POIS | M1_REGEN,
- X M2_UNDEAD | M2_HOSTILE, C(BLACK) },
- X/* Centaurs */
- X { "plains centaur", S_CENTAUR, 4, 18, 4, 0, 0, (G_GENO | 1),
- X { { AT_WEAP, AD_PHYS, 1, 6 }, { AT_KICK, AD_PHYS, 1, 6 },
- X NO_ATTK, NO_ATTK, NO_ATTK},
- X 50, 500, 0, MS_SILENT, MZ_LARGE, M1_COLLECT | M1_GREEDY, M2_STRONG,
- X C(BROWN) },
- X { "forest centaur", S_CENTAUR, 5, 18, 3, 10, -1, (G_GENO | 1),
- X { { AT_WEAP, AD_PHYS, 1, 8 }, { AT_KICK, AD_PHYS, 1, 6 },
- X NO_ATTK, NO_ATTK, NO_ATTK},
- X 55, 600, 0, MS_SILENT, MZ_LARGE, M1_COLLECT | M1_GREEDY, M2_STRONG,
- X C(GREEN) },
- X { "mountain centaur", S_CENTAUR, 6, 20, 2, 10, -3, (G_GENO | 1),
- X { { AT_WEAP, AD_PHYS, 1, 10 }, { AT_KICK, AD_PHYS, 1, 6 },
- X { AT_KICK, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK },
- X 55, 500, 0, MS_SILENT, MZ_LARGE, M1_COLLECT | M1_GREEDY, M2_STRONG,
- X C(CYAN) },
- X/* Dragons */
- X { "baby gray dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
- X { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 50, 500, 0, MS_ROAR, MZ_HUGE,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(GRAY) },
- X { "baby red dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
- X { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 50, 500, 0, MS_ROAR, MZ_HUGE,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_FIRE_RES,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(RED) },
- X { "baby white dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
- X { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 50, 500, 0, MS_ROAR, MZ_HUGE,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_COLD_RES,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(WHITE) },
- X { "baby blue dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
- X { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 50, 500, 0, MS_ROAR, MZ_HUGE,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_ELEC_RES,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(BLUE) },
- X { "baby green dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
- X { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 50, 500, 0, MS_ROAR, MZ_HUGE,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_POIS | M1_POIS_RES,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(GREEN) },
- X { "baby orange dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
- X { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 50, 500, 0, MS_ROAR, MZ_HUGE,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_SLEE_RES,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(ORANGE_COLORED) },
- X { "baby black dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
- X { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 50, 500, 0, MS_ROAR, MZ_HUGE,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(BLACK) },
- X { "baby yellow dragon", S_DRAGON, 12, 9, 2, 10, 0, G_GENO,
- X { { AT_BITE, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 50, 500, 0, MS_ROAR, MZ_HUGE,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_ACID | M1_STON_RES,
- X M2_HOSTILE | M2_STRONG | M2_CARNIVORE, C(YELLOW) },
- X { "gray dragon", S_DRAGON, 10, 9, -1, 20, 4, (G_GENO | 1),
- X { { AT_BREA, AD_MAGM, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
- X { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
- X 150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_MAGIC | M1_SEE_INVIS,
- X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS, C(GRAY) },
- X { "red dragon", S_DRAGON, 10, 9, -1, 20, -4, (G_GENO | 1),
- X { { AT_BREA, AD_FIRE, 6, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
- X { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
- X 150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_MAGIC | M1_SEE_INVIS | M1_FIRE_RES,
- X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS, C(RED) },
- X { "orange dragon", S_DRAGON, 10, 9, -1, 20, 5, (G_GENO | 1),
- X { { AT_BREA, AD_SLEE, 4, 25 }, { AT_BITE, AD_PHYS, 3, 8 },
- X { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
- X 150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_MAGIC | M1_SEE_INVIS | M1_SLEE_RES,
- X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
- X C(ORANGE_COLORED) },
- X { "white dragon", S_DRAGON, 10, 9, -1, 20, -5, (G_GENO | 1),
- X { { AT_BREA, AD_COLD, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
- X { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
- X 150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_MAGIC | M1_SEE_INVIS | M1_COLD_RES,
- X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
- X C(WHITE) },
- X { "black dragon", S_DRAGON, 10, 9, -1, 20, -6, (G_GENO | 1),
- X { { AT_BREA, AD_DISN, 4, 10 }, { AT_BITE, AD_PHYS, 3, 8 },
- X { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
- X 150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_MAGIC | M1_SEE_INVIS,
- X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
- X C(BLACK) },
- X { "blue dragon", S_DRAGON, 10, 9, -1, 20, -7, (G_GENO | 1),
- X { { AT_BREA, AD_ELEC, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
- X { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
- X 150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_MAGIC | M1_SEE_INVIS | M1_ELEC_RES,
- X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
- X C(BLUE) },
- X { "green dragon", S_DRAGON, 10, 9, -1, 20, 6, (G_GENO | 1),
- X { { AT_BREA, AD_DRST, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
- X { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
- X 150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_MAGIC | M1_SEE_INVIS | M1_POIS | M1_POIS_RES,
- X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
- X C(GREEN) },
- X { "yellow dragon", S_DRAGON, 10, 9, -1, 20, 7, (G_GENO | 1),
- X { { AT_BREA, AD_ACID, 4, 6 }, { AT_BITE, AD_PHYS, 3, 8 },
- X { AT_CLAW, AD_PHYS, 1, 4 }, { AT_CLAW, AD_PHYS, 1, 4 }, NO_ATTK },
- X 150, 1500, 0, MS_ROAR, MZ_GIGANTIC,
- X M1_FLY | M1_THICK_HIDE | M1_NOHANDS | M1_GREEDY | M1_JEWELS |
- X M1_MAGIC | M1_SEE_INVIS | M1_ACID | M1_STON_RES,
- X M2_HOSTILE | M2_STRONG | M2_NASTY | M2_CARNIVORE | M2_EGGS,
- X C(YELLOW) },
- X/* Elementals */
- X { "air elemental", S_ELEMENTAL, 8, 36, 2, 30, 0, (G_NOCORPSE | 1),
- X { { AT_ENGL, AD_PHYS, 2, 10 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 5, 0, 0, MS_SILENT, MZ_HUGE,
- X M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES, M2_STRONG, C(CYAN) },
- X { "fire elemental", S_ELEMENTAL, 8, 12, 2, 30, 0, (G_NOCORPSE | 1),
- X { { AT_CLAW, AD_FIRE, 3, 6 }, { AT_NONE, AD_FIRE, 0, 4 },
- X NO_ATTK, NO_ATTK, NO_ATTK },
- X 5, 0, 0, MS_SILENT, MZ_HUGE,
- X M1_FLY | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_FIRE_RES,
- X M2_STRONG, C(YELLOW) },
- X { "earth elemental", S_ELEMENTAL, 8, 6, 2, 30, 0, (G_NOCORPSE | 1),
- X { { AT_CLAW, AD_PHYS, 4, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 50, 0, 0, MS_SILENT, MZ_HUGE,
- X M1_WALLWALK | M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_THICK_HIDE |
- X M1_STON_RES,
- X M2_STRONG, C(BROWN) },
- X { "water elemental", S_ELEMENTAL, 8, 6, 2, 30, 0, (G_NOCORPSE | 1),
- X { { AT_CLAW, AD_PHYS, 5, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 50, 0, 0, MS_SILENT, MZ_HUGE,
- X M1_NOEYES | M1_NOLIMBS | M1_POIS_RES | M1_SWIM, M2_STRONG, C(BLUE) },
- X/* Fungi */
- X { "violet fungus", S_FUNGUS, 3, 1, 7, 0, 0, (G_GENO | 2),
- X { { AT_TUCH, AD_PHYS, 1, 4 }, { AT_TUCH, AD_STCK, 0, 0 },
- X NO_ATTK, NO_ATTK, NO_ATTK }, 10, 100, 0, MS_SILENT, MZ_SMALL,
- X M1_NOEYES | M1_NOLIMBS | M1_POIS_RES,
- X M2_HOSTILE | M2_OMNIVORE, C(MAGENTA) },
- X { "brown mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 1),
- X { { AT_NONE, AD_COLD, 0, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 5, 30, 0, MS_SILENT, MZ_SMALL,
- X M1_NOEYES | M1_NOLIMBS | M1_COLD_RES | M1_POIS_RES,
- X M2_HOSTILE | M2_OMNIVORE, C(BROWN) },
- X { "yellow mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 2),
- X { { AT_NONE, AD_STUN, 0, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 5, 30, 0, MS_SILENT, MZ_SMALL,
- X M1_NOEYES | M1_NOLIMBS | M1_POIS | M1_POIS_RES,
- X M2_HOSTILE | M2_OMNIVORE, C(YELLOW) },
- X { "green mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 1),
- X { { AT_NONE, AD_ACID, 0, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 5, 30, 0, MS_SILENT, MZ_SMALL,
- X M1_NOEYES | M1_NOLIMBS | M1_ACID | M1_STON_RES,
- X M2_HOSTILE | M2_OMNIVORE, C(GREEN) },
- X { "red mold", S_FUNGUS, 1, 0, 9, 0, 0, (G_GENO | 1),
- X { { AT_NONE, AD_FIRE, 0, 4 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 5, 30, 0, MS_SILENT, MZ_SMALL,
- X M1_NOEYES | M1_NOLIMBS | M1_FIRE_RES | M1_POIS_RES,
- X M2_HOSTILE | M2_OMNIVORE, C(RED) },
- X/* Gnomes */
- X { "gnome", S_GNOME, 1, 6, 5, 4, 0, (G_GENO | G_SGROUP | 1),
- X { { AT_WEAP, AD_PHYS, 1, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 10, 100, 0, MS_ORC, MZ_SMALL,
- X M1_HUMANOID | M1_COLLECT, 0, C(BROWN) },
- X { "gnome lord", S_GNOME, 3, 8, 4, 4, 0, (G_GENO | 2),
- X { { AT_WEAP, AD_PHYS, 1, 8 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 15, 120, 0, MS_ORC, MZ_SMALL,
- X M1_HUMANOID | M1_COLLECT, M2_LORD, C(BLUE) },
- X { "gnome king", S_GNOME, 5, 10, 2, 20, 0, (G_GENO | 1),
- X { { AT_WEAP, AD_PHYS, 2, 6 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 20, 150, 0, MS_ORC, MZ_SMALL,
- X M1_HUMANOID | M1_COLLECT, M2_PRINCE, C(HI_LORD) },
- X { "gnomish wizard", S_GNOME, 3, 10, 4, 10, 0, (G_GENO | 1),
- X { { AT_MAGC, AD_SPEL, 0, 0 }, NO_ATTK, NO_ATTK, NO_ATTK, NO_ATTK },
- X 15, 120, 0, MS_ORC, MZ_SMALL,
- X M1_HUMANOID | M1_MAGIC, 0, C(HI_ZAP) },
- X#ifdef SPLITMON_1
- X};
- X#endif
- X#endif /* !SPLITMON_2 */
- END_OF_FILE
- if test 39815 -ne `wc -c <'src/monst.c1'`; then
- echo shar: \"'src/monst.c1'\" unpacked with wrong size!
- fi
- # end of 'src/monst.c1'
- echo shar: End of archive 25 \(of 30\).
- cp /dev/null ark25isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 30 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-